package com.gengzp.permission.factory;

import com.gengzp.permission.core.PermissionExemptUrisFetcher;
import com.gengzp.permission.core.PermissionTokenProcessor;

import java.util.List;

/**
 * @ClassName PermissionStrategyFactory
 * @Description 权限认证框架实例工厂
 * @Author gengzp
 * @Date 2025/8/12 20:58
 */
public interface PermissionInstanceFactory {

    /**
     * 获取所有权限认证豁免接口获取器实例
     *
     * @return 权限认证豁免接口获取器实例集合
     */
    List<PermissionExemptUrisFetcher> getAllPermissionExemptUrisFetchers();

    /**
     * 获取token处理器实例
     * <p> 如果用户实现了自定义的token处理器，则返回用户自定义的token处理器实例，否则返回默认的token处理器实例
     * <p> 若用户实现的token处理器实现类数量超过1个, 则只能随机返回其中一个
     *
     * @return token处理器实例
     */
    PermissionTokenProcessor getPermissionTokenProcessor();

}
